iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0

今天要來簡短介紹一下 SSH 日常的使用情境,
說一些個人經驗
在學校和公司都有 Linux cluster 的機器,
偶爾都會有需要使用別人帳號的需求 網管最討厭這種人,出事很難釐清責任
但有時候你需要做一些 quota 綁帳號的事,
或是你跟同事需要 share 某個特權帳號來做事,
這時候你就不只需要能開該帳號的家目錄,
還需要就是該家目錄的 owner

扯遠了,
往往這時候你的同學或同事就會說,
某某帳號的密碼幾號,
你就用那個密碼登入就好
這時候我就會很好奇,
你交換 public key 不好嗎…
不然對方還要告訴我他的密碼我也是很尷尬

進入正題,
其實使用 SSH key 就兩個重點

  1. 確保你登入要用的 private key 與遠方機器內的 public key 是成對的
  2. 常用檔案的權限要對,例如 ~/.ssh/ -> 這個 dir 權限要開 0700、~/.ssh/config -> 這個 config file 權限要開 0600

如何 gen key

這一步應該大部分的觀眾都很熟,
我自己是常用 -t -b -C 這三個參數,
分別代表 加密要用的算法、bit 數(越長越安全)與該 key pair 的註解

例如

$ ssh-kegen -t rsa -b 4096 -C "yourname@gmail.com"

不失一般性,我們假設你的 private key 存檔的位置是 ~/.ssh/mykey_rsa
public key 存檔的位置在 ~/.ssh/mykey_rsa.pub

如何使用 key

確定遠端機器有寫入 public key

一種方法是使用指令 + 密碼做第一次登入

$ ssh-copy-id -i ~/.ssh/mykey_rsa.pub youraccount@remote.server

你也可以登入遠端機器,直接 copy paste public key,
這種場景適用在你幫別人加登入權限,
直接登入遠端機器,
把 public key 寫在要登入帳號的家目錄下 ~/.ssh/authorized_keys

使用 private key 登入遠端機器

我們先手動測一下,

$ ssh youraccount@remote.server -i ~/.ssh/mykey_rsa

我自己是很討厭用 ssh-add 這種指令把 private key 加入 key pool,
當你換一個 session 就不能 work 了,
所以一律建議把設定寫入 ~/.ssh/config
範例:

Host <這邊填到時候你 ssh xxx@domain.name 時要用到的 domain.name>
    Hostname <這邊填 IP 還是 DNS server 可以解析的實際域名>
    User <這邊填你要登入的家目錄 owner 的 account name,如果是連到 git server,這邊填 git>
    IdentityFile ~/.ssh/mykey_rsa

有的人會加一行 StrictHostKeyChecking no
不然在使用 Ansible 連到新的機器時,
有時候會因為跳出 new host key checking 的 error ,
導致 playbook 噴錯…

不過這邊我個人是建議 ~/.ssh/config 設好之後,
自動手動連一遍,確認 host key 都有經過人眼驗證過,
在我們往後開機器的時候,
我會預設讀者已經可以透過這篇教學把相關機器的連線都設定好,
也就是說我不需要密碼,
就可以在各個機器之間跳轉

其他使用場景

自動使用跳板連進內網 - SSH tunneling

保留內網的連線後門 - SSH reverse tunneling


上一篇
快速開一台自己的雲端主機
下一篇
安裝 Ansible
系列文
我只是想自動執行 Ansible ,一定要用 Jenkins 嗎30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言